<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

</head>
<body>
    <script>
        // 递归二分法排序 (快速排序)
        // function quickSort(arr) {
        //     if (arr.length <= 1) {
        //         return arr
        //     }
        //     var centerIndex = parseInt(arr.length / 2)
        //     var center = arr.splice(centerIndex, 1)[0]
        //     var left = []
        //     var right = []
        //     for (i = 0; i < arr.length; i++) {
        //         if (arr[i] < center) {
        //             left.push(arr[i])
        //         } else {
        //             right.push(arr[i])
        //         }
        //     }
        //     return quickSort(left).concat(center, quickSort(right))
        // }
        // var arr = [5, 3, 8, 9, 1, 2, 6, 4, 7]
        // var res = quickSort(arr)
        // console.log(res)



        // 插入排序
        // var arr = [3, 5, 1, 9, 6, 8, 2, 7, 4]
        // for (var i = 1; i < arr.length; i++) {
        //     var tmp = arr[i]
        //     var j = i - 1
        //     while (arr[j] > tmp) {
        //         arr[j + 1] = arr[j]
        //         j--
        //     }
        //     arr[j + 1] = tmp
        // }
        // console.log(arr)



        // 数组去重
        // 方案一 不推荐 它改变了原数组
        // var arr = [1, 3, 4, 2, 4, 9, 6, 5, 1, 1, 2, 9]
        // for (var i = 0; i < arr.length; i++) {
        //     for (var j = i + 1; j <arr.length; j++) {
        //         if (arr[i] === arr[j]) {
        //             arr.splice(j, 1)
        //             j--
        //             // 注意数组塌陷 
        //         }
        //     }
        // }
        // console.log(arr)

        // 方案二
        // 来个新数组 一个一个往里加 没有就加 有了就不加了
        // var arr = [1, 3, 4, 2, 4, 9, 6, 5, 1, 1, 2, 9]
        // var newArr = []
        // for (var i = 0; i < arr.length; i++) {
        //     if (newArr.indexOf(arr[i]) === -1) {
        //     // if (!newArr.includes(arr[i])) {
        //         newArr.push(arr[i])
        //     }
        // }
        // console.log(newArr)
        
        // 方案三
        // 对象成员名不重名
        // 准备一个空对象
        // 循环遍历数组 每个成员当做对象的key使用 没有就添加 有了就改值(key不变)
        // 循环遍历对象 key当做数组值
        // var arr = [1, 3, 4, 2, 4, 9, 6, 5, 1, 1, 2, 9]
        // var obj = {}
        // for (var i = 0; i < arr.length; i++) {
        //     obj[arr[i]] = 'colorful'
        // }
        // var newArr = []
        // for (var key in obj) {
        //     newArr.push(key - 0)
        // }
        // // console.log(obj)
        // console.log(newArr)




        // 基础练习
        // var arr = []
        // var sad = 'happy'
        // var arr1 = [1, 2, sad, 335, 123, 'asd', 'wadas', ]
        // console.log(arr1)
        // arr1.push('尾')
        // arr1.unshift('头')
        // console.log('arr1', arr1)
        // // console.log(arr1.sort().reverse())
        // // console.log(arr1)
        // // console.log('new')
        // // console.log(arr1.splice(1, 3))
        // // console.log(arr1)
        // // console.log('newnew splice(1, 6, "替换1", "替换2")')
        // // console.log(arr1.splice(1, 6, '替换内容1', '替换内容2'))
        // // console.log(arr1)
        // arr1.forEach(function (item, index, arr) {
        //     // console.log(item)
        //     // console.log(index)
        //     // console.log(arr)
        // })
        // arr1.map(function (item, index, arr) {
        //     // console.log(item + ' 0v0') 
        // })
        // arr2 = arr1.filter(function (item, index, arr) {
        //     return index > 2
        // })
        // console.log('arr2', arr2)
        // arr2.fill('头', 0, 2)
        // console.log('arr1', arr1)
        // console.log('arr2', arr2)
        // console.log('新的开始')
        // arr2.fill('填充1', 2, 4)
        // console.log('arr2', arr2)
        // console.log(arr2.find(function (item) { 
        //     if (item === '头') return item
        // }))
        // console.log(arr2.findIndex(function (id) { 
        //     if (id === '头') return id
        // }))



        // console.log('练习收尾')


        // 作业
        // 排好序的数组，插入数字自动排序
        // 考虑新晋头尾
        // 考虑一下被插入数组为空时
        // 考虑完以上俩 整循环遍历 比较 插入
            // 循环遍历的各种判断条件
            // >和< 不行 形同的数放不进去
            // >=和< 不行 会死循环 原因: 插入后重复满足要求 重复插入 不断
                // 解决方案 break
            // >和<= 行 
                // 插入后 后面循环没必要了 最好也加个 break 当然不加也不会出错
        var arr = [11, 22, 33, 44, 55, 66]
        function insert(arr, num) {
            if (num < arr[0]) return arr.unshift(num) 
            if (num > arr[arr.length - 1]) return arr.push(num) 
            if (!arr.length) return arr.push(num) 
            for (var i = 1; i < arr.length; i++) { 
                if (num > arr[i] && num <= arr[i + 1]) { 
                    arr.splice(i + 1, 0, num)
                    break
                }
            }
        }
        insert(arr, 129)
        insert(arr, 49)
        insert(arr, 49)
        console.log(arr)
        

        

    </script>
</body>
</html>